/**
 * @brief  Linear Algebra functions wrapper of cuSolver multiGPU APIs
 */

#ifndef CUSOLVER_MG_WRAPPER_H_
#define CUSOLVER_MG_WRAPPER_H_

#include "cusolverDn_wrapper.h"
#include "mcsolverMg.h"

#define CUSOLVERMG_H_ MCSOLVER_CUSOLVER_MG_H_

#define cusolverMgContext mcsolverMgContext
#define cusolverMgHandle_t mcsolverMgHandle_t

#define cusolverMgGridMapping_t mcsolverMgGridMapping_t
#define CUDALIBMG_GRID_MAPPING_ROW_MAJOR MACALIBMG_GRID_MAPPING_ROW_MAJOR
#define CUDALIBMG_GRID_MAPPING_COL_MAJOR MACALIBMG_GRID_MAPPING_COL_MAJOR

#define cudaLibMgGrid_t macaLibMgGrid_t
#define cudaLibMgMatrixDesc_t macaLibMgMatrixDesc_t

#define cusolverMgCreate mcsolverMgCreate
#define cusolverMgDestroy mcsolverMgDestroy
#define cusolverMgDeviceSelect mcsolverMgDeviceSelect
#define cusolverMgCreateDeviceGrid mcsolverMgCreateDeviceGrid
#define cusolverMgDestroyGrid mcsolverMgDestroyGrid
#define cusolverMgCreateMatrixDesc mcsolverMgCreateMatrixDesc
#define cusolverMgDestroyMatrixDesc mcsolverMgDestroyMatrixDesc
#define cusolverMgSyevd_bufferSize mcsolverMgSyevd_bufferSize
#define cusolverMgSyevd mcsolverMgSyevd
#define cusolverMgGetrf_bufferSize mcsolverMgGetrf_bufferSize
#define cusolverMgGetrf mcsolverMgGetrf
#define cusolverMgGetrs_bufferSize mcsolverMgGetrs_bufferSize
#define cusolverMgGetrs mcsolverMgGetrs
#define cusolverMgPotrf_bufferSize mcsolverMgPotrf_bufferSize
#define cusolverMgPotrf mcsolverMgPotrf
#define cusolverMgPotrs_bufferSize mcsolverMgPotrs_bufferSize
#define cusolverMgPotrs mcsolverMgPotrs
#define cusolverMgPotri_bufferSize mcsolverMgPotri_bufferSize
#define cusolverMgPotri mcsolverMgPotri

#endif
